Technical Field
The present invention relates to computing resource sharing and, more particularly, to segmentation of computing resources between multiple virtual machines on a single set of hardware.
Description of the Related Art
Virtualization allows service providers to run multiple virtual machines (VMs) on a single server, such that each virtual machine operates wholly independently of the others. However, the total computing capacity of the VMs on a single server, whether that capacity is measured in processing power, memory, or some other quantity, cannot exceed the physical capacity of the hardware used to maintain the VMs. Naturally, service providers wish to maximize the number of VMs served with given hardware, because the cost of adding VMs is small compared to the cost of adding new hardware.
Existing techniques for VM packing partition a time horizon into multiple time slots, where each twenty-four hour period may be split into, e.g., three blocks of eight hours each. This partitioning may take into account differing levels of resource usage depending on the time of day, such that VMs with high needs during, e.g., an afternoon segment may be placed on servers with VMs that have low needs during the afternoon but high needs during the night. In some cases, maximum CPU usage in a time slot is used to characterize the VMs.
However, this partitioning is usually performed manually, using fixed-length partitioning. For example, the time partitions may be fixed at eight hours long. This leads to suboptimal partitioning in many cases, because a given partition may not give the best results for a specific set of VMs. As such, conventional partitioning may lead to a sub-optimal use of available resources.